// i18n.js
import {i18n} from '@lingui/core';
// import {t} from '@lingui/core/macro';

export const locales = ['zh', 'en', 'fr', 'ja']
export const defaultLocale = "zh";

// 切换语言
export async function switchLocale(locale = defaultLocale) {

    const {messages} = await import(`./locales/${locale}/messages.mjs`);
    i18n.load(locale, messages)
    i18n.activate(locale)
    console.log(`switchLocale: ${locale}`, i18n, new Date().toLocaleString());
}

// 组合式API
export function useI18n() {
    return {
        t: i18n._,
        i18n
    };
}

// 标准Vue插件
export default {
    install(app, options = {}) {
        // i18n.loadAndActivate({
        //     locale: options.locale,
        //     messages: options.messages || {}
        // });

        // 2. 注册全局属性和方法, template中使用
        //      <div> $t('欢迎') </div>
        //      <div> $i18n._('欢迎') </div>
        app.config.globalProperties.$t = i18n.t
        app.config.globalProperties.t = i18n.t
        app.config.globalProperties.$i18n = i18n;

        // 3. 提供依赖注入 setup中通过 inject 获取
        //      import { inject } from 'vue'
        //      const t = inject('t')
        app.provide('t', i18n._);
        app.provide('i18n', i18n);
    }
};